const fs = require('fs');
const path = require('path');

console.log('=== Node.js 文件管理器 ===');
console.log('支持的命令：');
console.log('  mkdir <目录名>  - 创建目录');
console.log('  touch <文件名> - 创建文件');
console.log('  delete <文件名> - 删除文件');
console.log('  exit - 退出程序');
console.log('');

// 设置输入编码
process.stdin.setEncoding('utf8');

// 监听用户输入
process.stdin.on('data', (data) => {
  const input = data.trim();
  const parts = input.split(' ');
  const command = parts[0];
  const target = parts[1];
  
  switch (command) {
    case 'mkdir':
      if (!target) {
        console.log('请输入要创建的文件夹: mkdir <目录名>');
        return;
      }
      createDirectory(target);
      break;
      
    case 'touch':
      if (!target) {
        console.log('请输入要创建的文件: touch <文件名>');
        return;
      }
      createFile(target);
      break;
      
    case 'delete':
      if (!target) {
        console.log('请输入要删除的文件: delete <文件名>');
        return;
      }
      deleteFile(target);
      break;
      
    case 'exit':
      console.log('程序退出');
      process.exit(0);
      break;
      
    default:
      console.log('未知命令，请使用: mkdir, touch, delete, exit');
  }
});

// 创建目录函数
function createDirectory(dirName) {
  const dirPath = path.join(process.cwd(), dirName);
  
  if (fs.existsSync(dirPath)) {
    console.log(`目录 ${dirName} 已存在！`);
    return;
  }
  
  fs.mkdir(dirPath, (err) => {
    if (err) {
      console.error(`创建目录失败: ${err.message}`);
      return;
    }
    console.log(`文件目录创建成功!!`);
  });
}

// 创建文件函数
function createFile(fileName) {
  // 检查是否存在 filedir 目录，如果不存在则创建
  const filedirPath = path.join(process.cwd(), 'filedir');
  if (!fs.existsSync(filedirPath)) {
    fs.mkdirSync(filedirPath);
  }
  
  const filePath = path.join(filedirPath, fileName);
  
  if (fs.existsSync(filePath)) {
    console.log(`文件 ${fileName} 已存在！`);
    return;
  }
  
  fs.writeFile(filePath, 'hello node', 'utf8', (err) => {
    if (err) {
      console.error(`创建文件失败: ${err.message}`);
      return;
    }
    console.log(`文件创建成功`);
  });
}

// 删除文件函数
function deleteFile(fileName) {
  const filePath = path.join(process.cwd(), 'filedir', fileName);
  
  if (!fs.existsSync(filePath)) {
    console.log(`文件 ${fileName} 不存在！`);
    return;
  }
  
  fs.unlink(filePath, (err) => {
    if (err) {
      console.error(`删除文件失败: ${err.message}`);
      return;
    }
    console.log(`文件 ${fileName} 删除成功！`);
    console.log('程序退出');
    process.exit(0);
  });
}

// 显示初始提示
console.log('请输入要创建的文件夹: mkdir filedir');
